<style type="text/css">
    <!--
    #tablaestructura {



        border-style:solid;
        border-width:0px;
        border-color:black;
        background-color: #F2F2F2;
        /*     background-color: white;*/
        width: 90%;
    }


    th.conbordes,td.conbordes{
        border-style:solid;
        border-width:2px;
        border-color:black;
    }

    .error{
        font-weight: bolder;
        color: red;
    }

    .informacion{
        font-weight: bolder;

    }

    .button-edit{
        width: 100px;
    }
    #form1 {
        text-align: center;
    }

    #preferencias {
        text-align: right;
    }

    #preferencias2 {
        text-align: center;
        border-color: gray;
        background-color:white;

    }

    #titulo {
        text-align: center;
    }


    #titulos {
        background-color: #99CCFF;
    }

    #columnaestructura {
        width: 80%;
    }

    -->
</style>

<script LANGUAGE="JavaScript">

    function confirmSubmit()
    {
        var agree=confirm("Se borrarán todos los nodos, ¿Desea continuar?");
        if (agree)
            return true ;
        else
            return false ;
    }
    // -->
</script>

<?php
$debug=false;
$local = false;

if (!$local) {
    require_once '../../../config.php';
    require_login();
}
include_once "ModelClass.php";
include_once "query.php";
include_once "consultasGrupos.php";

define("DATA_TABLENAME","pru_block_modulo_control_tutorial_data");
define("STRUCT_TABLENAME","pru_block_modulo_control_tutorial_structure");
define("ELEMENTS_TABLENAME","pru_block_modulo_control_tutorial_elements");

$modoGET=false;

if ($modoGET) {
    $activartipo=$_GET["mostrar_tipo"];
    $activarid=$_GET["mostrar_id"];
    $activaredicion=$_GET["mostrar_edicion"];
    $confirmaredicion=$_GET["boton"];
    $elemento=$_GET["group1"];
    $elimdef=$_GET["eliminardef"];
    $nombrenodo=$_GET["nombrenodo"];
    $tiponodo=$_GET["tiponodo"];
    $anadirdef=$_GET["anadir"];
    $loadxml = $_GET["uploaded"];
}

else {
    $activartipo=$_POST["mostrar_tipo"];
    $activarid=$_POST["mostrar_id"];
    $activaredicion=$_POST["mostrar_edicion"];
    $confirmaredicion=$_POST["boton"];
    $elemento=$_POST["group1"];
    $elimdef=$_POST["eliminardef"];
    $nombrenodo=$_POST["nombrenodo"];
    $tiponodo=$_POST["tiponodo"];
    $anadirdef=$_POST["anadir"];
    $loadxml = $_POST["uploaded"];
}


if ($local) {
    $dbhost="localhost";
    $dbusername="root";
    $dbpass="";
    $database="pruebas";
    $link=conecta($dbhost,$dbusername,$dbpass,$database);
}

$model=new Model($debug);

//Eliminación definitiva del nodo.
if ($elimdef) {
    $nombrereal = $model->getNameStructId($elemento);
    $model->deleteElementStruct($nombrereal);

}

if ($loadxml) {

    if (basename( $_FILES['uploadedfile']['name']!=NULL)) {
        $target_path = "./";
        $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
        if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
            errorJavascript("El fichero se ha cargado correctamente.");
            reinicia();
            $model->initializeStruct($debug);
            $model->loadXML(basename( $_FILES['uploadedfile']['name']));
            $model->loadStructure($debug);
        } else {
            errorJavascript("Error en la carga del fichero.");
        }
    }
    else errorJavascript("No se ha especificado ningún fichero.");
}

//Añadir nodo
if ($anadirdef) {
    $nombrePadre = $model->getNameStructId($elemento);
    $tipoPadre = $model->getTypeStruct($nombrePadre);
    if ($nombrePadre!="-1") {
        if ($model->validateStructName($nombrenodo)) {
            $nombrePadre=$model->removeFirstRoot($nombrePadre);

            //If we're trying to insert an element...
            if (($tiponodo)==$model->parametros['element_nodes_type_name']) {

                //If the parent is an element too...
                if (($tipoPadre)==$model->parametros['element_nodes_type_name']) {
                    //Adding the element first...
                    $model->addChild($nombrenodo, $tiponodo, "", "", $debug);
                    //Adding the element1-element2.

                    $nombrePadre= $model->removeFirstSlash($nombrePadre);
                    $model->addChild($nombrePadre."-".$nombrenodo, $tiponodo, "", "", $debug);
                    //return;
                }

                //INSERTING AN ELEMENT ON THE ROOT
                else if (($tipoPadre)==$model->parametros['internal_nodes_type_name']) {

                    $model->addChild($nombrenodo, $tiponodo, $nombrePadre, "", $debug);

                }
                //This can't be (STRING/ELEMENT...)
                else {
                    $anadidoinvalido=true;
                }
            }

            //We can't add an STRING/STRING
            else {

                if (($tipoPadre)==$model->parametros['element_nodes_type_name']) {
                    $model->addChild($nombrenodo, $tiponodo, $nombrePadre, "", $debug);
                    //return;
                }

                else if (($tipoPadre)==$model->parametros['internal_nodes_type_name']) {

                    $model->addChild($nombrenodo, $tiponodo, $nombrePadre, "", $debug);
                }
                else {
                    $anadidoinvalido=true;
                }
            }

        }
        else $nombreinvalido=true;
    }
}


?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>MANEJADOR DE LA ESTRUCTURA</title>
    </head>

    <body>
        <h1 id="titulo">ADMINISTRACIÓN DE LA ESTRUCTURA</h1>
        <?php


        if ($modoGET) echo "<form enctype='multipart/form-data' action='schemeHandler.php'  id='form1' method='get'>";
        else echo "<form enctype='multipart/form-data' action='schemeHandler.php'  id='form1' method='post'>";
        echo "<input type='hidden' name='MAX_FILE_SIZE' value='100000' />";

        if ($activaredicion) $checkedicion = "CHECKED";
        if ($activartipo) $checktipo = "CHECKED";
        if ($activarid) $checkid = "CHECKED";

        ?>
        <center>
            <table id="tablaestructura">
                <tr id="titulos">
                    <th>ESTRUCTURA ACTUAL</th>
                    <?php if ($activaredicion) echo "<th>HERRAMIENTAS DE MODIFICACIÓN</th>"?>
                </tr>
                <tr>
                    <td id="columnaestructura">
                        <?php

                        echo "<ul>";
                        $model->printList('/SISTEMA',$activartipo, $activarid,true,$activaredicion,$elemento);
                        ?>
                    </td>
                    <?php
                    if (((!$anadirdef)&&(!$elimdef))&&(!$confirmaredicion)&&($activaredicion)) {
                        echo "<td>";
                        echo "<center><table id='botones'>";
                        echo "<center><tr><td>Selecciona una opción:<br/><br/></td></tr></center>";
                        echo "<tr><td><input type='submit' name='boton' value='Añadir nodo' class='button-edit'></td></tr>";
                        echo "<tr><td><input type='submit' name='boton' value='Eliminar nodo' class='button-edit'></td></tr>";
                        echo "<tr><td><input type='submit' name='boton' value='Cargar XML' class='button-edit'></td></tr>";
                        echo "<tr><td><input type='submit' name='boton' value='Guardar XML' class='button-edit'></td></tr></table></center>";
                        //echo "<tr><td><input type='submit' name='boton' value='Modificar'></td></tr>";
                        echo "</td>";
                    }
                    ?>
                    <?php
                    if ($confirmaredicion=="Añadir nodo") {
                        $nombrereal = $model->getNameStructId($elemento);
                        $tipospermitidos = $model->getAllowedTypes();
                        echo "<td>";
                        echo "Selecciona el nodo que será el padre del nuevo nodo, escribe su nombre nuevo y su tipo.<br/><br/><br/>";
                        echo "Nombre del nuevo nodo:<br/>
                                <center><input type='text' name='nombrenodo' /></center><br/><br/>";
                        echo "Tipo del nuevo nodo:<br/>
                            <center><select name='tiponodo'>";
                        echo "<option value='".$model->parametros['element_nodes_type_name']."'>".$model->parametros['element_nodes_type_name']."</option>";
                        echo "<option value='".$model->parametros['internal_nodes_type_name']."'>".$model->parametros['internal_nodes_type_name']."</option>";

                        foreach ($tipospermitidos as $tipo) echo "<option value='".$tipo."'>".$tipo."</option>";

                        echo "</select><br/><br/><br/>";
                        echo "<center><input type='submit' name='anadir' value='Añadir nodo'></center><br/>";
                        echo "<center><input type='submit' value='Cancelar'></center>";
                        echo "</td>";
                    }

                    if ($confirmaredicion=="Eliminar nodo") {
                        $nombrereal = $model->getNameStructId($elemento);
                        if ($nombrereal =="-1") {
                            echo "<td class='error'>";
                            echo "Debes seleccionar un nodo previamente.<br/><br/><br/>";
                            echo "<center><input type='submit'  value='Aceptar'></center>";
                        }
                        else {
                            echo "<td class='error'>";
                            echo "¿Estás seguro de que <br/>quieres eliminar el nodo <br/> (".$nombrereal.")?<br/> <i>(se eliminarán también <br/>todos sus hijos)<br/><br/><br/></i>";
                            echo "<center><input type='submit' name='eliminardef' value='Eliminar definitivamente'></center><br/>";
                            echo "<center><input type='submit' value='Cancelar'></center>";
                        }
                        echo "</td>";
                    }
                    if ($confirmaredicion=="Cargar XML") {
                        ?>
                    }
                    <td>
                        Selecciona el archivo XML a cargar: <br />
                        <input name="uploadedfile" type="file" /><br />
                        <input type="submit" name="uploaded" value="Cargar archivo" onClick="return confirmSubmit()"/>
                        <input type='submit' value='Cancelar'/>
                    </td>
                        <?php
                    }
                    if ($elimdef) {
                        echo "<td class='informacion'>";
                        echo "El elemento <br/> (".$nombrereal.")<br/> ha sido eliminado correctamente.<br/><br/><br/>";
                        echo "<center><input type='submit' value='Aceptar' /></center>";
                        echo "</td>";
                    }
                    if ($anadirdef) {
                        $nombrereal = $model->getNameStructId($elemento);
                        if ($nombrereal =="-1") {
                            echo "<td class='error'>";
                            echo "Debes seleccionar un nodo de la estructura como su padre.<br/><br/><br/>";
                            echo "<center><input type='submit' value='Aceptar' /></center>";
                        }
                        else if ($nombreinvalido) {
                            echo "<td class='error'>";
                            echo "El nombre del nodo debe ser un nombre válido.<br/><br/><br/>";
                            echo "<center><input type='submit' value='Aceptar' /></center>";
                        }
                        else if ($anadidoinvalido) {
                            echo "<td class='error'>";
                            echo "Solo se pueden añadir elementos como hijos de elementos y hojas como hijos de elementos.<br/><br/><br/>";
                            echo "<center><input type='submit' value='Aceptar' /></center>";
                        }
                        else {
                            echo "<td class='informacion'>";
                            echo "El elemento ha sido añadido correctamente.<br/><br/><br/>";
                            echo "<center><input type='submit' value='Aceptar' /></center>";
                        }
                        echo "</td>";
                    }
                    ?>
                </tr>
            </table>
            <table id="preferencias2">
                <td>
                    <table id="preferencias">
                        <tr><td>Mostrar tipo <input type="checkbox" name="mostrar_tipo" value="mostrar_tipo" <?php echo $checktipo?> /></td></tr>
                        <tr><td>Mostrar id <input type="checkbox" name="mostrar_id" value="mostrar_id" <?php echo $checkid?>/></td></tr>
                        <tr><td>Modo edición<input type="checkbox" name="mostrar_edicion" value="mostrar_edicion" <?php echo $checkedicion?>/></td></tr>
                    </table>
                </td>
                <td>
                <td><input type="submit" value="Actualizar" /></td>
                </td>
            </table>
        </center>
    </body>
</html>

<?php dB::close($link);

function conecta($dbhost,$dbusername,$dbpass,$database) {
    $link=DB::connect($dbhost,$dbusername,$dbpass);
    if (!$link) {
        die('Could not connect: ' . mysql_error());
        return FALSE;
    }
    if(!DB::select_db($database,$link)) {
        DB::close($link);
        die('Could not connect: ' . mysql_error());
        return FALSE;
    }
    return $link;
}

function errorJavascript($mensaje) {
    echo "<script language='javascript' type='text/javascript'>";
    echo "alert('".$mensaje."');";
    echo "</script>";
}

function reinicia() {
    $query= array(  'DROP TABLE pru_block_modulo_control_tutorial_data;',
            'DROP TABLE pru_block_modulo_control_tutorial_structure;',
            'DROP TABLE pru_block_modulo_control_tutorial_elements',
//Tabla estructura
            "CREATE TABLE pru_block_modulo_control_tutorial_structure (
            id INT(11) AUTO_INCREMENT PRIMARY KEY,
            value VARCHAR(100) NOT NULL,
            type VARCHAR(20) NOT NULL,
            lft INT(6) NOT NULL,
            rgt INT(6) NOT NULL
            );",
//Indice sobre value
            "CREATE UNIQUE INDEX IDX_STRUCT ON pru_block_modulo_control_tutorial_structure (value);",
//Tabla datos
            "CREATE TABLE pru_block_modulo_control_tutorial_data(
            id INT(11)NOT NULL,
            id_structure INT(11)NOT NULL,
            value VARCHAR(100)NOT NULL,
            PRIMARY KEY(id,id_structure),
            FOREIGN KEY (id_structure)
            REFERENCES pru_block_modulo_control_tutorial_structure(id),
            FOREIGN KEY (id)
            REFERENCES pru_block_modulo_control_tutorial_elements(id)
            );",

            "CREATE TABLE pru_block_modulo_control_tutorial_elements(
            type CHAR(20),
            id INT (11) AUTO_INCREMENT PRIMARY KEY ,
            name VARCHAR(50)
            );",
            "CREATE INDEX IDX_ELEMENTS ON pru_block_modulo_control_tutorial_elements(name) "
    );

    foreach ($query as $q) DB::query($q);

}


?>